home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / xaes_new.lzh / DISPATCH.C < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-26  |  5.3 KB  |  254 lines

  1. /********************************************************************
  2.  *                                                                1.20*
  3.  *    XAES: Dispatcher calling routines                                *
  4.  *    by Ken Hollis                                                    *
  5.  *                                                                    *
  6.  *    Copyright (c) 1994, Bitgate Software.  All Rights Reserved.        *
  7.  *                                                                    *
  8.  *    These were also WinLIB PRO's original dispatch routines.  I        *
  9.  *    added quite a few extra routines to this module.                *
  10.  *                                                                    *
  11.  ********************************************************************/
  12.  
  13. #include "xaes.h"
  14.  
  15. void *_MainDispatcher;
  16. void *_MainKeyDispatcher;
  17.  
  18. LOCAL int WCallWndDispatcherSub(WINDOW *win, int msg_buf[], int Dispatcher(WINDOW *, int[]))
  19. {
  20.     if ((Dispatcher = win->WndDispatcher) && (win->handle > 0))
  21.         return Dispatcher(win, msg_buf) ? FALSE : TRUE;
  22.  
  23.     return TRUE;
  24. }
  25.  
  26. GLOBAL int WCallWndDispatcher(WINDOW *win, int msg_buf[])
  27. { return WCallWndDispatcherSub(win, msg_buf, WCallWndDispatcher); }
  28.  
  29. GLOBAL int WCallDlgDispatcher(WINDOW *win, int message)
  30. {
  31.     int msg_buf[8] = {WM_DIALOG, 0, 0, 0, 0, 0, 0, 0};
  32.  
  33.     if (win) {
  34.         if (win->state & W_DIALOG) {
  35.             msg_buf[3] = message;
  36.             return WCallWndDispatcher(win, msg_buf);
  37.         }
  38.  
  39.         return TRUE;
  40.     } else
  41.         return FALSE;
  42. }
  43.  
  44. GLOBAL int WCallWKeyDispatcher(WINDOW *win, int key)
  45. {
  46.     int msg_buf[8] = {WM_KEYBD, 0, 0, 0, 0, 0, 0, 0};
  47.  
  48.     if (win) {
  49.         if (win->state & (W_DIALOG|W_TEXT|W_TIMER|W_FLYING)) {
  50.             msg_buf[3] = key;
  51.             return WCallWndDispatcher(win, msg_buf);
  52.         }
  53.  
  54.         return TRUE;
  55.     } else
  56.         return FALSE;
  57. }
  58.  
  59. GLOBAL int WCallBtnDispatcher(WINDOW *win, int mx, int my, int button, int kstate, int bclicks)
  60. {
  61.     int msg_buf[8] = {WM_BUTTON, 0, 0, 0, 0, 0, 0, 0};
  62.  
  63.     if (win) {
  64.         if (win->state & (W_DIALOG|W_TEXT|W_TIMER|W_FLYING)) {
  65.             msg_buf[3] = mx;
  66.             msg_buf[4] = my;
  67.             msg_buf[5] = button;
  68.             msg_buf[6] = kstate;
  69.             msg_buf[7] = bclicks;
  70.             return WCallWndDispatcher(win, msg_buf);
  71.         }
  72.  
  73.         return TRUE;
  74.     } else
  75.         return FALSE;
  76. }
  77.  
  78. GLOBAL int WCallTxtDispatcher(WINDOW *win, int message)
  79. {
  80.     int msg_buf[8] = {WM_TEXT, 0, 0, 0, 0, 0, 0, 0};
  81.  
  82.     if (win) {
  83.         if (win->state & W_TEXT) {
  84.             msg_buf[3] = message;
  85.             return WCallWndDispatcher(win, msg_buf);
  86.         }
  87.  
  88.         return TRUE;
  89.     } else
  90.         return FALSE;
  91. }
  92.  
  93. GLOBAL int WCallFKeyDispatcher(WINDOW *win, int fkeynum)
  94. {
  95.     int msg_buf[8] = {WM_FKEY, 0, 0, 0, 0, 0, 0, 0};
  96.  
  97.     if (win) {
  98.         msg_buf[3] = fkeynum;
  99.         return WCallWndDispatcher(win, msg_buf);
  100.     } else
  101.         return FALSE;
  102. }
  103.  
  104. GLOBAL int WCallHelpDispatcher(WINDOW *win)
  105. {
  106.     int msg_buf[8] = {WM_HELP, 0, 0, 0, 0, 0, 0, 0};
  107.  
  108.     if (win) {
  109.         if (win->state & (W_DIALOG|W_TEXT|W_TIMER|W_FLYING)) {
  110.             if (win->state & (W_DIALOG|W_FLYING))
  111.                 msg_buf[3] = 1;
  112.  
  113.             if (win->state & (W_TEXT|W_TIMER))
  114.                 msg_buf[3] = 2;
  115.  
  116.             return WCallWndDispatcher(win, msg_buf);
  117.         }
  118.  
  119.         return TRUE;
  120.     } else
  121.         return FALSE;
  122. }
  123.  
  124. GLOBAL int WCallUndoDispatcher(WINDOW *win)
  125. {
  126.     int msg_buf[8] = {WM_UNDO, 0, 0, 0, 0, 0, 0, 0};
  127.  
  128.     if (win) {
  129.         if (win->state & (W_DIALOG|W_TEXT|W_TIMER|W_FLYING)) {
  130.             if (win->state & (W_DIALOG|W_FLYING))
  131.                 msg_buf[3] = 1;
  132.  
  133.             if (win->state & (W_TEXT|W_TIMER))
  134.                 msg_buf[3] = 2;
  135.  
  136.             return WCallWndDispatcher(win, msg_buf);
  137.         }
  138.  
  139.         return TRUE;
  140.     } else
  141.         return FALSE;
  142. }
  143.  
  144. GLOBAL int WCallHotkeyDispatcher(WINDOW *win, int key, int objnum)
  145. {
  146.     int msg_buf[8] = {WM_HOTKEY, 0, 0, 0, 0, 0, 0, 0};
  147.  
  148.     if (win) {
  149.         if (win->state & W_DIALOG) {
  150.             msg_buf[3] = key;
  151.             msg_buf[4] = objnum;
  152.             return WCallWndDispatcher(win, msg_buf);
  153.         }
  154.  
  155.         return TRUE;
  156.     } else
  157.         return FALSE;
  158. }
  159.  
  160. GLOBAL int WCallTmrDispatcher(WINDOW *win)
  161.     int msg_buf[8] = {WM_TIMER, 0, 0, 0, 0, 0, 0, 0};
  162.  
  163.     if (win) {
  164.         if (win->state & W_TIMER) {
  165.             msg_buf[3] = win->handle;
  166.  
  167.             return WCallWndDispatcher(win, msg_buf);
  168.         }
  169.  
  170.         return TRUE;
  171.     } else
  172.         return FALSE;
  173. }
  174.  
  175. GLOBAL int WCallTMDDispatcher(WINDOW *win, int mode)
  176. {
  177.     int msg_buf[8] = {WM_TIMECHG, 0, 0, 0, 0, 0, 0};
  178.  
  179.     if (win) {
  180.         if (win->state & W_TIMER) {
  181.             msg_buf[3] = win->handle;
  182.             msg_buf[4] = mode;
  183.  
  184.             return WCallWndDispatcher(win, msg_buf);
  185.         }
  186.  
  187.         return TRUE;
  188.     } else
  189.         return FALSE;
  190. }
  191.  
  192. GLOBAL int WCallBHelpDispatcher(WINDOW *win, int button)
  193. {
  194.     int msg_buf[8] = {WM_GETHELP, 0, 0, 0, 0, 0, 0};
  195.  
  196.     helpmode = FALSE;
  197.     WGrafMouse(ARROW);
  198.  
  199.     if (win)
  200.         if (win->state & W_DIALOG) {
  201.             msg_buf[3] = win->handle;
  202.             msg_buf[4] = button;
  203.  
  204.             return WCallWndDispatcher(win, msg_buf);
  205.         }
  206.     else
  207.         return FALSE;
  208.  
  209.     return FALSE;
  210. }
  211.  
  212. GLOBAL int WCallSliderDispatcher(WINDOW *win, int object, int pos, int lastpos)
  213. {
  214.     int msg_buf[8] = {WM_SLIDER, 0, 0, 0, 0, 0, 0};
  215.  
  216.     helpmode = FALSE;
  217.  
  218.     if (win)
  219.         if (win->state & W_DIALOG) {
  220.             msg_buf[3] = object;
  221.             msg_buf[4] = pos;
  222.             msg_buf[5] = lastpos;
  223.  
  224.             return WCallWndDispatcher(win, msg_buf);
  225.         }
  226.     else
  227.         return FALSE;
  228.  
  229.     return FALSE;
  230. }
  231.  
  232. LOCAL int WCallEtcDispatcherSub(int msg_buf[], int Dispatcher(int[]))
  233. {
  234.     if (Dispatcher = _MainDispatcher)
  235.         return Dispatcher(msg_buf) ? FALSE : TRUE;
  236.  
  237.     return TRUE;
  238. }
  239.  
  240. GLOBAL int WCallEtcDispatcher(int msg_buf[])
  241. { return WCallEtcDispatcherSub(msg_buf, WCallEtcDispatcher); }
  242.  
  243. LOCAL int WCallKeyDispatcherSub(int key, int Dispatcher(int))
  244. {
  245.     if (Dispatcher = _MainKeyDispatcher)
  246.         return Dispatcher(key) ? FALSE : TRUE;
  247.  
  248.     return TRUE;
  249. }
  250.  
  251. GLOBAL int WCallKeyDispatcher(int key)
  252. { return WCallKeyDispatcherSub(key, WCallKeyDispatcher); }
  253.